// 引入sme-router
import smeRouter from 'sme-router'

// 引入获取管理员数据的方法
import { getAdmins } from './api/admin'

// 引入ejs模板
import index from 'v/index'
import login from 'v/login'
import adminList from 'v/adminList'
import advList from 'v/advList'

// 实例化smeRouter
// smeRouter默认使用hash模式， 如果第二个参数为html5,则smeRouter使用history模式
const router = new smeRouter('root', 'html5')
// 将router添加到window,上.这样.哪里都可以获取到router
window.router = router
// router.go('目标路径') 可以修改地址栏路径,但是不发送请求

// 定义前端路由规则
router.route('/login', (req, res, next) => {
  // req 是路径变化,页面要切换的时候的一些信息
  // res 提供了一些方法,可以在路径变化的时候,规定渲染什么,或重定向等
  // next 主要用于嵌套路由
  //   console.log(req, res, next)
  res.render(login())
})
router.route('/index', (req, res, next) => {
  // 由于一级路由/index中嵌套了二级路由,所以必须使用next将匹配路径传递下去
  next(
    index({
      subRoute: res.subRoute(),
      url: req.url, // 将当前浏览器地址栏的路径传递到模板中
    })
  )
})
// 配置二级路由时,要在二级路由的路径前面拼接一级路由的路径
router.route('/index/adminList', async (req, res, next) => {
  // 一旦打开管理员列表界面,立刻发送请求获取管理员数据
  const result = await getAdmins()
  console.log(result)
  if (result.success) {
    res.render(adminList({ adminList: result.data }))
  } else {
    toastr.error(result.msg)
  }
})
router.route('/index/advList', (req, res, next) => {
  res.render(advList())
})
// * 表示配置的路径之外的所有其他路径
router.route('*', (req, res, next) => {
  res.redirect('/index')
})
